package com.videoanalysis;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * 程序入口类
 */
@Slf4j
public class Main {
    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("用法: java -jar video-analysis.jar <视频文件路径>");
            System.out.println("示例: java -jar video-analysis.jar video.mp4");
            System.exit(1);
        }

        String videoPath = args[0];

        File videoFile = new File(videoPath);
        if (!videoFile.exists()) {
            System.err.println("错误: 视频文件不存在: " + videoPath);
            System.exit(1);
        }

        try {
            log.info("开始视频分析...");
            log.info("视频文件: {}", videoPath);

            // 创建视频分析器
            VideoAnalyzer analyzer = new VideoAnalyzer();

            // 执行分析
            AnalysisResult result = analyzer.analyzeVideo(videoFile);

            // 打印分析摘要
            System.out.println("\n" + result.generateSummary());

            log.info("分析完成！结果保存在: {}", result.getResultDirectory());
            System.out.println("\n完整的分析结果已保存到: " + result.getResultDirectory());

        } catch (Exception e) {
            log.error("视频分析过程中发生错误", e);
            System.err.println("错误: " + e.getMessage());
            System.exit(1);
        }
    }

    /**
     * 打印使用说明
     */
    private static void printUsage() {
        System.out.println("视频分析工具");
        System.out.println("==========");
        System.out.println("\n本工具可以分析视频内容，提取关键帧并识别画面中的物体。");
        System.out.println("\n功能特点:");
        System.out.println("- 自动提取视频关键帧");
        System.out.println("- 使用深度学习模型识别图像内容");
        System.out.println("- 生成详细的分析报告");
        System.out.println("- 保存所有分析结果和中间文件");
        System.out.println("\n使用方法:");
        System.out.println("java -jar video-analysis.jar <视频文件路径>");
        System.out.println("\n示例:");
        System.out.println("java -jar video-analysis.jar video.mp4");
        System.out.println("\n注意事项:");
        System.out.println("1. 需要预先安装FFmpeg并在配置文件中设置路径");
        System.out.println("2. 确保有足够的磁盘空间存储分析结果");
        System.out.println("3. 首次运行时会下载图像识别模型，需要网络连接");
        System.out.println("4. 配置文件位于 config/application.yml");
    }
}
